%module CEGUIListboxItem

%{
#include "CEGUISize.h"
#include "elements/CEGUIListboxItem.h"
	%}

%import "../CEGUIString.i"
%import "../CEGUISize.i"

//#include "../CEGUIBase.h"

//#include "../CEGUIColourRect.h"
//#include "../CEGUITextUtils.h"

namespace CEGUI
{

//	class Size;
//	class Rect;
//	class GeometryBuffer;

//	%nodefaultctor ListboxItem;
class ListboxItem
{
public:
    ListboxItem(const String& text, uint item_id = 0, void* item_data = 0, bool disabled = false, bool auto_delete = true);

    const String&   getTooltipText(void) const      {return d_tooltipText;}

    const String& getText(void) const {return d_textLogical;}

    const String& getTextVisual() const;

    uint    getID(void) const           {return d_itemID;}

    void*   getUserData(void) const     {return d_itemData;}

    bool    isSelected(void) const      {return d_selected;}

    bool    isDisabled(void) const      {return d_disabled;}

//    const Window*   getOwnerWindow() const      {return d_owner;}

//    ColourRect  getSelectionColours(void) const     {return d_selectCols;}

//    const Image*    getSelectionBrushImage(void) const      {return d_selectBrush;}


    /*************************************************************************
        Manipulators
    *************************************************************************/

    virtual void setText(const String& text);

    void    setTooltipText(const String& text)      {d_tooltipText = text;}

//    void    setID(uint item_id)     {d_itemID = item_id;}

    void    setUserData(void* item_data)    {d_itemData = item_data;}

    void    setSelected(bool setting)       {d_selected = setting;}

    void    setDisabled(bool setting)       {d_disabled = setting;}

//    void    setOwnerWindow(const Window* owner)     {d_owner = owner;}

//    void    setSelectionColours(const ColourRect& cols)     {d_selectCols = cols;}

//    void    setSelectionColours(colour top_left_colour, colour top_right_colour, colour bottom_left_colour, colour bottom_right_colour);

//    void    setSelectionColours(colour col)     {setSelectionColours(col, col, col, col);}

//    void    setSelectionBrushImage(const Image* image)      {d_selectBrush = image;}

    void    setSelectionBrushImage(const String& imageset, const String& image);



    /*************************************************************************
        Abstract portion of interface
    *************************************************************************/

    virtual Size    getPixelSize(void) const    = 0;

//    virtual void draw(GeometryBuffer& buffer, const Rect& targetRect,
//                      float alpha, const Rect* clipper) const = 0;

};

} // End of  CEGUI namespace section
